package com.xhsj.user.generalprocess.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xhsj.user.generalprocess.entity.TbPamGeneralProcessHiTask;
import com.xhsj.user.generalprocess.vo.GeneralAuditHistoryVo;
import com.xhsj.user.generalprocess.vo.GeneralAuditVo;
import com.xhsj.user.generalprocess.vo.GeneralHiTaskVo;
import com.xhsj.user.generalprocess.vo.GeneralRunTaskVo;
import com.xhsj.user.pms.patent.vo.FindRunTaskVo;
import org.apache.ibatis.annotations.Mapper;
import com.xhsj.user.generalprocess.entity.TbPamGeneralProcessTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 通用流程任务表 Mapper 接口
 * </p>
 *
 * @author suxiaolin
 * @since 2021-01-21
 */
@Mapper
public interface TbPamGeneralProcessTaskMapper extends BaseMapper<TbPamGeneralProcessTask> {

    /**
     * 保存正在执行中任务
     * @author 苏小林
     * @date 2021/1/22 11:51
     * @param: processTask
     * @param: taskTableName
     */
    int saveTask(@Param("entity") TbPamGeneralProcessTask entity, @Param("tableName") String tableName);

    /**
     * 删除流程任务
     * @author 苏小林
     * @date 2021/1/22 13:43
     * @param: processTaskId
     */
    void delById(@Param("id") Long id,@Param("tableName") String tableName);

    /**
     * 查询正在执行中流程
     * @author 苏小林
     * @date 2021/1/25 13:50
     * @param: page
     * @param: generalAuditVo
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.generalprocess.vo.GeneralRunTaskVo>
     */
    IPage<GeneralRunTaskVo> findRunTask(@Param("page") Page<GeneralRunTaskVo> page, @Param("entity") GeneralAuditVo entity);

    /**
     * 查询历史任务
     * @author 苏小林
     * @date 2021/1/25 15:06
     * @param: page
     * @param: generalAuditVo
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.generalprocess.vo.GeneralRunTaskVo>
     */
    IPage<GeneralHiTaskVo> findHiTask(@Param("page") Page<GeneralHiTaskVo> page, @Param("entity") GeneralAuditVo entity);

    /**
     * 查询审核历史
     * @author 苏小林
     * @date 2021/1/29 10:02
     * @param: page
     * @param: generalAuditVo
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.xhsj.user.generalprocess.vo.GeneralAuditHistoryVo>
     */
    IPage<GeneralAuditHistoryVo> findAuditHistory(@Param("page") Page<GeneralHiTaskVo> page, @Param("entity") GeneralAuditVo entity);


    /**
     * 通过type和dataId查询数据
     * @author 苏小林
     * @date 2021/3/9 18:01
     * @param: dataId
     * @param: processType
     * @return: java.util.List<com.xhsj.user.generalprocess.entity.TbPamGeneralProcessTask>
     */
    List<TbPamGeneralProcessTask> findByDataIdAndType(@Param("dataId") Long dataId, @Param("processType") String processType);


    IPage<GeneralRunTaskVo> getTransferInData(Page<FindRunTaskVo> page, @Param("userId") Long userId, @Param("modelType") int modelType);

    void updateUserIdAndRoleId(@Param("id") long id, @Param("userId") Long userId, @Param("roleId") Object roleId);

    // 删除正在执行的数据
    void deleteByDataId(@Param("dataId") Long dataId);

    /**
     * @Description: 专利统计-海外在审
     * @Param:  date 日期
     * @Author: liuqinghua
     * @Date: 2021/9/6
     */
    Integer getOverseasPatentStatistics(@Param("date") String date,@Param("processType") String processType,@Param("isNow") boolean isNow);
}
